home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / C⁄C++ / picture / anringpi.c < prev    next >
Text File  |  1993-09-23  |  2KB  |  86 lines

  1. //    Copyright 1993 Ralph Gonzalez
  2.  
  3. /*
  4. *    FILE:        anringpi.c
  5. *    AUTHOR:        R. Gonzalez
  6. *    CREATED:    November 8, 1990
  7. *
  8. *    Sample animated pict application.
  9. */
  10.  
  11. # include    "anringpi.h"
  12. # include    "anring.h"
  13. # define    NUM_ITERATIONS    100
  14.  
  15. /******************************************************************
  16. *    initialize
  17. ******************************************************************/
  18. An_Ring_Pict::An_Ring_Pict(void)
  19. {
  20.     Translation        *transl;
  21.     
  22.     projector1 = new Projector;
  23.     projector1->set_background_color(RED);
  24.     projector1->set_cropping_frame(0.,-.05,1.,.5);
  25.     projector1->set_projection_frame(0.,0.,1.8,.9);
  26.  
  27.     projector2 = new Corner_Projector;
  28.     
  29.     projector1->set_screen(screen);
  30.     projector2->set_screen(screen);
  31.     
  32.     camera1 = new Camera;
  33.     camera1->set_position(0.,3.,0.,0.,.29,0.);
  34.     camera2 = new Camera;
  35.     camera2->set_position(0.,100.,10.,0.,PI/2.,0.);
  36.     camera2->set_focal_length(20.);
  37.     
  38.     transl = new Translation;
  39.     transl->set(0.,0.,10.);
  40.     
  41.     segment = new Animated_Ring;
  42.     segment->move(transl);
  43.     
  44.     delete transl;
  45. }
  46.  
  47. /******************************************************************
  48. *    run
  49. ******************************************************************/
  50. void    An_Ring_Pict::run(void)
  51. {
  52.     int        i;
  53.     Transformation    *identity;
  54.     
  55.     identity = new Transformation;
  56.     
  57.     for (i=0 ; i<NUM_ITERATIONS && !screen->mouse_button_is_down() ; i++)
  58.     {
  59.         projector1->clear();
  60.         segment->set_color(YELLOW);
  61.         segment->draw(camera1,projector1,identity);
  62.         projector2->clear();
  63.         segment->set_color(BLUE);
  64.         segment->draw(camera2,projector2,identity);
  65.         segment->animate();
  66.     }
  67.     
  68.     screen->wait();
  69.     
  70.     delete identity;
  71. }
  72.  
  73. /******************************************************************
  74. *    destroy
  75. ******************************************************************/
  76. An_Ring_Pict::~An_Ring_Pict(void)
  77. {
  78.     delete projector1;
  79.     delete projector2;
  80.  
  81.     delete camera1;
  82.     delete camera2;
  83.     
  84.     delete segment;
  85. }
  86.